In a data network, packet job scheduler attempts to control the volume and rate of data traffic (or traffic) being processed at network elements within a data network. A flow of data in a network is typically occurs in bursts, meaning that the flow will be high at times and low at other times, and not always a constant rate of data. Often multiple flows of data arrive at the network elements at the same time, and the network elements have to prioritize their data processing of the multiple flows to maximize network efficiency. Packet job scheduler (sometimes also referred to as traffic scheduling, or quality of service (QoS) management) may counter simultaneous flows of data with inconsistent arrival rates by de-bursting different flows at different time, i.e., smoothing high rate peaks and low rate troughs. The benefits of packet job scheduler are fair distribution of processing resources, maximization of processing efficiency, and reduced packet loss for the multiple flows of data. In addition, packet job scheduler allows a flow of data to be prioritized over other flows of data based on a perceived priority. Often a flow of data is governed by a service level agreement between the provider of the data network and a customer (or a tenant) of the data network. The service level agreement is translated to processing priority at one or more packet processor deployed by the provider, and the packet processor may slow down or speed up processing of a certain flow if the flow is deemed to use the resources above or below the agreed service level agreement. This kind of QoS management of data traffic is an important part of network engineering.
A number of ways of packet job scheduler have been proposed in prior art. For example, a network element (such as a packet processor) of the data network may use a scheduler to schedule processing of packets of various data flows based on a weighted round robin (WRR) method. In a WRR method, a flow may be given a percentage (i.e., weight) of the maximum processing rate (called “line rate”), say 30% for flow A of an agreed upon 300M bits per second rate to a processor of 1 Gigabit per second line rate, and the scheduler may accept the flow for processing by statistically complying with the percentage (statistically 30% of bits or packets processed being for flow A in a period of time), while accepting flows for processing of other flows with other predetermined percentages (i.e., round robin). A WRR method may be implemented using a token bucket algorithm where the token bucket contains a number of tokens (permit to transmit) for each flow based on a service agreement on the flow and processing of a flow is based on the availability of its tokens within the token bucket. Another example of packet job scheduler is that network elements of the data network may use a scheduler to schedule processing of packets of various data flows based on a maximum and/or minimum data rate. For example, the scheduler may dictate that a flow consumes a minimum of 10% of line rate regardless of bit rates of other flows coming to a network element. The guarantee of minimum bit rate provides a foolproof way to provide an agreed upon service level with a customer. At the same time, the guarantee for a flow may cause the network element to be less efficient in data processing given that the flow takes a minimum bandwidth under all circumstances (and the guarantee may be referred to as “actual partition” of bandwidth). Similarly, the scheduler may schedule processing of packet of various data flows based on a maximum and/or minimum data rates with similar benefits and disadvantages.